Recently, networks, such as the Internet have been widely used, and printers are also often used via networks. Usually, for expensive printers, such as high-speed printers or color printers, a network interface is built into the printer. However, for inexpensive printers, such as monochrome printers, a network interface is not included in the main body of the printer and is generally provided separately as a network card module.
In such a case, the printer and the network card module are independent intelligent systems each having its own central processing unit (CPU). Usually, the network card module includes a print server function for overall control of various printer services via the network. The printer and the network card module provide desired services via a connecting interface. In this way, network services imposing high processing loads can be implemented in the network card module, and the performance required for the CPU of the printer and the peripheral devices can be reduced. As a result, the production cost for the printer can be reduced.
A known network interface for a printer, such as the line printer daemon protocol (LPR, whose standard is defined by RFC1179), is only required to transmit print data. However, recently, the demands for information management by printers have increased, and various means for managing information have been provided as additional functions of printers.
An example of the simplest form of such an additional function is a function for transmitting information management data (job language) to the port that receives print data. Since the job language shares a port with the print data, additional service ports are unnecessary. Thus, adding this function to the printer is relatively easy. However, there is a problem in that, if a large amount of print data is transmitted, the port will be occupied by the print data and the transmission of the information management data stops. Another problem is that, when the connection is unidirectional, such as the LPR connection in a network, the printer cannot obtain information to begin with.
Another method for managing information is to use the simple network management protocol (SNMP)/management information base (MIB) (RFC1157). According to this method, a standard SNMP is used to transmit data to a special port. This method, however, requires a proprietary special client program that is capable of receiving the SNMP and providing a user interface (UI). Moreover, since the SNMP is a protocol for communicating simple information, only a simple database including numbers and character strings can be provided to the printer. Therefore, data constituting a user interface including bitmap images describing the structure of the devices must be stored in a client program. As a result, a client program corresponding to each printer model must be provided.
Recently, the mainstream method for transmitting information has been shifting to a method using the hypertext transfer protocol (HTTP) (RFC1945 and RFC2616). According to this method, an HTTP service is provided by a network card module so as to enable the handling of Web content on information related to the printer, including hypertext markup language (HTML) data and bitmap data. The client (printer) uses a known web browser as a graphical user interface (GUI) to display and operate the Web content. In this way, a client program is not required. In previously proposed methods, various unique data (e.g., character strings of messages and bitmap images) had to be managed by a client program. However, in this method, the client (printer) only has to provide its model. This is suitable for producing printer products in a short period of time.
Unfortunately, the methods described above only provide static functions installed in the network card module in advance. Consequently, dynamic services, such as adding new functions or changing the control method of already-installed functions, cannot be added.
Taking these problems into consideration, a platform technology for running an application program written in Java® (a trademark by Sun Microsystems, Inc., USA; hereinafter this application program is referred to the “Java® application program”) on a Java® virtual machine implemented in an apparatus, such as a printer, have been proposed. In this way, new functions can be added to the apparatus, i.e., the printer.
For example, there is a known multi-function apparatus capable of executing Java® application programs and capable of downloading Java® application programs. More specifically, a Java® application program operable on the multi-function apparatus is customized by a user so as to add new functions. The customized Java® application program is stored in a file server together with an identification (ID) number for identifying the user. When the multi-function apparatus is operated, it recognizes the ID number of the user and downloads the Java® application program corresponding to the user from the file server to the multi-function apparatus. In this way, additional functions are provided. (For example, refer to Japanese Patent Laid-Open No. 2000-298561.)
The Java® virtual machine for running the Java® application program includes application program interfaces (APIs) for providing various functions, such as a network communication function, required for controlling the apparatus. The Java® application program calls these APIs so as to control the apparatus and to process requests from the host computer connected to the apparatus.
The APIs provided as part of the Java® virtual machine include functions required for network communication and share the basic module for processing a network communication protocol. For this reason, the APIs provided as part of the Java® virtual machine are normally implemented in the network card module.
The usage of the APIs used by the Java® application program is unrestricted. Therefore, all APIs implemented in the network modules are available to all application programs. Accordingly, the Java® application program must restrict the available APIs for each application program.